package com.命令模式.案例1;

/**
 * 发起命令的类
 */
public class RemoteController {

    //开按钮的命令数组
    Comment[] onComments;
    //关按钮的命令数组
    Comment[] offComments;
    //撤销命令
    Comment undoCommnet;

    public RemoteController() {
        onComments=new Comment[5];
        offComments=new Comment[5];
        for (int i=0;i<5;i++){
            onComments[i]=new NoComment();
            offComments[i]=new NoComment();
        }
    }

    //给我们的按钮设置你需要的命令即可【发起命令】
    public void setCommnet(int num,Comment onComment,Comment offCommnet){
        onComments[num]=onComment;
        offComments[num]=offCommnet;
    }

    //按下开按钮【发起命令】
    public void onButtonWasPush(int no){
        //找到你按下的开按钮，并调用对应的方法
        onComments[no].execute();
        //记录最后这次的操作，用于撤销
        undoCommnet=onComments[no];
    }

    //按下关按钮【发起命令】
    public void offButtonWasPush(int no){
        //找到你按下的开按钮，并调用对应的方法
        offComments[no].execute();
        //记录最后这次的操作，用于撤销
        undoCommnet=offComments[no];
    }

    //按下撤销按钮
    public void undoButtonWasPush(){
        undoCommnet.undo();
    }
}
